home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso / misc / coding / vgacodng / part07_b.pas < prev    next >
Pascal/Delphi Source File  |  1996-11-22  |  1KB  |  59 lines

  1. program ShadeBob1;
  2.  
  3. uses crt;
  4.  
  5. var Pal : array[0..767] of byte;
  6.     n1,n2 : byte;
  7.  
  8. procedure SetPalette;assembler;    { Setzt die Palette in Pal }
  9. asm
  10.   mov     dx,3C8h
  11.   xor     al,al
  12.   out     dx,al
  13.   mov     cx,768
  14.   mov     dx,3C9h
  15.   mov     si,offset pal
  16. @Jmp1:
  17.   lodsb
  18.   out     dx,al
  19.   loop    @Jmp1
  20. end;
  21.  
  22. procedure BluePal;   { Schreibt eine blaue Palette in Pal setzt sie mittels }
  23. var loop : integer;  { SetPalette }
  24.  
  25. begin
  26.   for loop := 0 to 31 do begin
  27.     pal[loop*3+2] := loop * 2;
  28.     pal[(63-loop)*3+2] := loop * 2;
  29.     pal[(loop+64)*3+2] := loop * 2;
  30.     pal[(127-loop)*3+2] := loop * 2;
  31.     pal[(loop+128)*3+2] := loop * 2;
  32.     pal[(191-loop)*3+2] := loop * 2;
  33.     pal[(loop+192)*3+2] := loop * 2;
  34.     pal[(255-loop)*3+2] := loop * 2;
  35.   end;
  36.   setpalette;
  37. end;
  38.  
  39. procedure SetBob(x,y:word);  { Setzt ein Bob an die Koords X,Y }
  40. var n1,n2 : byte;
  41.  
  42. begin
  43.   for n1 := 0 to 19 do    { Hier werden in einem 20x20 Pixel großen Quadrat }
  44.     for n2 := 0 to 19 do  { alle Pixelwerte um 1 erhöht }
  45.       mem[$A000:(n2+y)*320+n1+x] := mem[$A000:(n2+y)*320+n1+x] + 1;
  46. end;
  47.  
  48.  
  49. begin
  50.   asm mov ax,13h; int 10h end;
  51.   BluePal;
  52.   randomize;
  53.   repeat
  54.     SetBob(random(300),random(180)); { Bob an zufällige Position setzen }
  55.   until keypressed;
  56.   readkey;
  57.   asm mov ax,3; int 10h end;
  58. end.
  59.